package com.example.controller;

import com.example.pojo.UserInfo;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     *@ResponseBody : 将返回值（数据）以响应体的形式返回，不再通过视图解析器
     *  从而达到异步操作的目的
     *  GET的异步操作中，请求参数的自动绑定和同步的操作基本一致
     */
    @GetMapping("/validateEmail")
    @ResponseBody
    public String validateEmail(String email){
        System.out.println("email = " + email);
        boolean flag = userService.getInfoByEmail(email);
        if (flag){
            return "fail";
        }
        return "success";
    }

    /**
     * POST的异步请求。请求参数是在请求体中
     * @RequestBody ：从请求体中获取数据,如果请求参数是一个json格式的字符串，
     * 可以用po实体自动映射接收
     */
    @PostMapping("/validateEmail")
    @ResponseBody
    public String validateEmail2(@RequestBody UserInfo userInfo){
        System.out.println("email = " + userInfo.getEmail());
        boolean flag = userService.getInfoByEmail(userInfo.getEmail());
        if (flag){
            return "fail";
        }
        return "success";
    }


    /**
     * 异步交互中，返回值类型 可以是void、String、数字、po、集合、map......
     * po: json对象    list集合：json数组
     * map：json对象
     */
    @GetMapping("/ajax")
    @ResponseBody
    public List<UserInfo> ajax(){
        UserInfo userInfo = new UserInfo();
        userInfo.setEmail("45456@qq.com");
        userInfo.setUsername("jack");
        UserInfo userInfo2 = new UserInfo();
        userInfo2.setEmail("45456@qq.com");
        userInfo2.setUsername("jack");
        List<UserInfo> list = new ArrayList<>();
        list.add(userInfo);
        list.add(userInfo2);
        return list;
    }

}
